package com.lawyers.action;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.lawyers.common.DocumentoVO;
import com.lawyers.common.UserVO;
import com.lawyers.database.DBAcciones;
import com.lawyers.database.DBLlenarCombos;
import com.lawyers.form.SubirTemplateForm;

public class SubirTemplateAction extends Action {

	private static Logger logger = Logger.getLogger(SubirTemplateAction.class);

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		SubirTemplateForm subirTemplateForm = (SubirTemplateForm) form;
		String accion = subirTemplateForm.getAccion();
		UserVO user = (UserVO) request.getSession().getAttribute("USUARIO");

		if (user == null)
			return mapping.findForward("login");

		if ("cargar".equalsIgnoreCase(accion)) {
			DocumentoVO doc = new DocumentoVO();
			doc.setActividad(subirTemplateForm.getActividad());
			doc.setCct(subirTemplateForm.getCct());
			doc.setRama(subirTemplateForm.getRama());
			doc.setCategoria(subirTemplateForm.getCategoria());
			doc.setDifSalarial(subirTemplateForm.getDifSalarial());
			doc.setHsExtra(subirTemplateForm.getHsExtra());
			doc.setInconstitucionalidad(subirTemplateForm.getInconstitucionalidad());
			doc.setLey24013(subirTemplateForm.getLey24013());
			doc.setTipoDespido(subirTemplateForm.getTipoDespido());
			
			
			
			Date hoy = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
			FormFile myFile = subirTemplateForm.getDocumentoPath();
			String nombreArchivo = myFile.getFileName().substring(0, myFile.getFileName().lastIndexOf("."));
			String tipoArchivo = myFile.getFileName().substring(myFile.getFileName().lastIndexOf("."));
			doc.setNombre(nombreArchivo);
			doc.setTipo(tipoArchivo);
			String fileName = myFile.getFileName();
			byte[] fileData = myFile.getFileData();
			File test= new File("C:/templates");
			if(!test.isDirectory()){
				test.mkdir();
			}
			String filePath = "C:/templates/"+nombreArchivo+"_"+sdf.format(hoy)+tipoArchivo;
			doc.setPath(filePath);
			if (!fileName.equals("")) {
				File fileToCreate = new File(filePath);
				if (!fileToCreate.exists()) {
					FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
					fileOutStream.write(fileData);
					fileOutStream.flush();
					fileOutStream.close();
					DBAcciones.subirTemplate(doc);
					return mapping.findForward("display");
				}else{
					return mapping.findForward("existeArchivo");
				}
			}else{
				return mapping.findForward("errorDesconocido");
			}
		}else{
			llenarCombos(subirTemplateForm);
			return mapping.findForward("display");
		}
	}

	private void llenarCombos(SubirTemplateForm subirTemplateForm) {
		try {
			subirTemplateForm.setLista132bis(DBLlenarCombos.getLista132_bis());
			subirTemplateForm.setListaAccidentes(DBLlenarCombos.getListaAccidentes());
			subirTemplateForm.setListaAcoso(DBLlenarCombos.getListaAcoso());
			subirTemplateForm.setListaActividades(DBLlenarCombos.getListaActividades());
			subirTemplateForm.setListaAcuerdoconc(DBLlenarCombos.getListaAcuerdoConc());
			subirTemplateForm.setListaAgravado(DBLlenarCombos.getListaAgravado());
			subirTemplateForm.setListaArt125323(DBLlenarCombos.getListaArt1());
			subirTemplateForm.setListaAsignacionesfam(DBLlenarCombos.getListaAsignaciones());
			subirTemplateForm.setListaBeneficio(DBLlenarCombos.getListaBeneficio());
			subirTemplateForm.setListaCategorias(DBLlenarCombos.getListaCategorias());
			subirTemplateForm.setListaCct(DBLlenarCombos.getListaCct());
			subirTemplateForm.setListaConducta(DBLlenarCombos.getListaConductas());
			subirTemplateForm.setListaContratacion(DBLlenarCombos.getListaContratacion());
			subirTemplateForm.setListaContratacionjor(DBLlenarCombos.getListaContratacionJor());
			subirTemplateForm.setListaContratacionpas(DBLlenarCombos.getListaContratacionPas());
			subirTemplateForm.setListaDanio(DBLlenarCombos.getListaDanios());
			subirTemplateForm.setListaDiferencia(DBLlenarCombos.getListaDiferencia());
			subirTemplateForm.setListaDifsalarial(DBLlenarCombos.getListaDiferenciasSalariales());
			subirTemplateForm.setListaHsExtra(DBLlenarCombos.getListaHsExtra());
			subirTemplateForm.setListaInconstitucionalidad(DBLlenarCombos.getListaInconstitucionalidad());
			subirTemplateForm.setListaIncorrecto(DBLlenarCombos.getListaIncorrecto());
			subirTemplateForm.setListaIusvariandi(DBLlenarCombos.getListaIus());
			subirTemplateForm.setListaLey24013(DBLlenarCombos.getListaLey24013());
			subirTemplateForm.setListaMonotributo(DBLlenarCombos.getListaMonotributo());
			subirTemplateForm.setListaProvincia(DBLlenarCombos.getListaProvincia());
			subirTemplateForm.setListaProyectada(DBLlenarCombos.getListaProyectada());
			subirTemplateForm.setListaRama(DBLlenarCombos.getListaRama());
			subirTemplateForm.setListaSancion(DBLlenarCombos.getListaSanciones());
			subirTemplateForm.setListaSolidaridad(DBLlenarCombos.getListaSolidaridad());
			subirTemplateForm.setListaTipoDespido(DBLlenarCombos.getListaTiposDespido());
			subirTemplateForm.setListaTransfondos(DBLlenarCombos.getListaTransFondos());
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			logger.info("ERROR AL LLENAR EL COMBO");
		}
	}

}
